package com.zpf.service.impl;

import com.zpf.dao.UserDao;
import com.zpf.dao.impl.UserDaoImpl;
import com.zpf.pojo.User;
import com.zpf.service.UserService;
import com.zpf.utils.Constants;
import com.zpf.utils.MD5Utils;
import com.zpf.utils.RandomUtils;

public class UserServiceImpl implements UserService {
    UserDao userDao = new UserDaoImpl();

    @Override
    public User login(String userName, String password) {
        //根据用户名到数据库查询用户对象
        User user = userDao.findByUserName(userName);
        //2.用户名为空则错误
        if (user == null) {
            return null;
        }

        //3.判断激活，未激活，则不让登录
        if(!Constants.USER_ACTIVE.equals(user.getStatus())){
            return null;
        }

        //4.判断角色是否为消费者,不是消费者，不让登录
        if(Constants.ROLE_ADMIN == user.getRole()){
            return null;
        }

        //5.校验密码是否正确，使用md5将用户输入的密码加密，
        String md5Pwd = MD5Utils.md5(password);
        if (md5Pwd.equals(user.getPassword())) {
            return user;
        }


        return null;
    }

    @Override
    public boolean check(String userName) {
        //根据用户名到数据库查询用户对象
        User user = userDao.findByUserName(userName);
        //判断是否能查询到
        if (user == null) {
            //用户不存在，可用
            return true;
        }else {
            return false;
        }
    }

    @Override
    public int createUser(User user) {
        //1.密码使用md5进行加密
        String md5 = MD5Utils.md5(user.getPassword());
        user.setPassword(md5);
        //2.设置消费者状态默认为激活状态
        user.setStatus(Constants.USER_ACTIVE);
        //3.初始化用户角色为消费者
        user.setRole(Constants.ROLE_CUSTOMER);
        //4.初始化消费者随机激活码
        user.setCode(RandomUtils.createActive());

        int count = userDao.addUser(user);
        return count;
    }
}
